package com.hzw.saas.api.rss;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hzw.saas.api.rss.bo.JournalBO;
import com.hzw.saas.api.rss.bo.JournalCustomBO;
import com.hzw.saas.common.config.util.PageParam;

import java.util.List;
import java.util.Map;

/**
 * 私有站点接口
 */
public interface IJournalCustomService {

    /**
     * 新增私有站点
     * @param journalCustomBOs
     * @return
     */
    String addJournalCustom(List<JournalBO> journalCustomBOs);


    /**
     * 根据id分页查询站点
     * @param pageParam
     * @param pids
     * @return
     */
    Page findCustomPage(PageParam pageParam, List<String> pids);

    /**
     * 移动私有站点
     * @param pid
     * @param newCatalogId
     */
    void moveCustom(String pid, String newCatalogId);

    /**
     * 修改私有站点
     * @param journalBO
     */
    void updateJournalCustom(JournalBO journalBO);

    void deleteJournalCustomByCatalogId(List<String> catalogIds);

    /**
     * 根据用户id和分类id查询公共站点
     * @param catalogId
     * @param userId
     * @return
     */
    List<JournalBO> findJournalCustom(String catalogId,String userId);



    boolean findCountLeZero(String rssId);

    /**
     * 根据用户和站点id分页查询公共站点数据
     * @param pageParam
     * @param catalogIds
     * @param userId
     * @return
     */
    IPage<JournalBO> pageByCatalogIds(PageParam pageParam, List<String> catalogIds, String userId);

    /**
     * 根据分类id查询私有站点数据
     * @param catalogIds
     * @return
     */
    List<JournalCustomBO> findByCatalogIds(List<String> catalogIds);

    /**
     * 根据主键删除数据
     * @param pid
     */
    void deleteById(String pid);

    /**
     * 根据私有站点id查询公共站点数据
     * @param collect
     * @return
     */
    List<JournalBO> findByPIds(List<String> collect);

    /**
     * 根据主键查询单挑数据
     * @param pid
     * @return
     */
    JournalCustomBO findById(String pid);

    /**
     * 根据主键查询私有站点数据
     * @param pids
     * @return
     */
    List<JournalCustomBO> findByIds(List<String> pids);

    /**
     * 根据用户id和站点id查询私有数据
     * @param userId
     * @param rssId
     * @return
     */
    List<JournalCustomBO> findByUserAndRssId(String userId, List<String> rssId);

    /**
     * 根据用户id查询私有站点id
     * @param userId
     * @return
     */
    List<String> findAllByUser(String userId);

    /**
     * * 根据用户id查询他所有的公共站点的id
     * @param userId
     * @return
         */
    List<String> findAllJournalByUser(String userId);

    void updateBatch(List<JournalCustomBO> byUserAndRssId);

}
